DV 26 - Power Macintosh Ç≈Çà ataManager ÇÃåƒÇ—èoǵ (97 îN 1 åé 31 ì˙)
Q: åªç›ÅAPower Macintosh ÉRÉìÉsÉÖÅ[É^Çà ATA ÉoÉXÇ…ëŒâûǵÇΩÉhÉâÉCÉoÇäJî≠ǵǃǢNjÇ∑ÅBǵǩǵÅAÇÌÇÍÇÌÇÍÇà ETO ÉfÉBÉXÉNÇ…ëŒÇ∑ÇÈÉäÉìÉNÉâÉCÉuÉâÉäÇå©Ç¬ÇØÇÈDZÇΔÇ™Ç≈Ç´Ç‹ÇπÇÒÅBÉwÉbÉ_ÉâÉCÉuÉâÉäÇÕdžÇÈÇÃÇ≈Ç∑Ç™ÅAÉäÉìÉNÇ∑Ç◊ǴLJÇÃÇ™å©Ç¬Ç©ÇËÇ‹ÇπÇÒÅB
A: è≠Ç»Ç≠ÇΔLJÅA68K ÉRÅ[ÉhÇèëǢǃǢÇÈÇÃÇ»ÇÁÅAÉäÉìÉNÇ∑Ç◊Ç´ÉâÉCÉuÉâÉäÇÕópà”Ç≥ÇÍǃǢNjÇπÇÒÅBPower Macintosh Çà ATA É}ÉlÅ[ÉWÉÉÇégópÇ∑ÇÈèÍçáÇÕÅAMixed Mode ÉOÉãÅ[ÇçÏê¨ÇµÇƒ ataManager ÇåƒÇ—èoÇ∑ïKóvǙdžÇËÇ‹Ç∑ÅBDZÇÍÇÕéüÇÃÇÊǧDžǻÇËÇ‹Ç∑ÅB
#include
#include
#define RESULT_OFFSET(type) ((sizeof(type) == 1) ? 3 : ((sizeof(type) == 2) ? 1 : 0))
#define TBTrapTableAddress(trapNum) (((trapNum & 0x03FF) << 2) + 0xE00)
pascal SInt16 ataManager(ataPB *pb)
{
#ifdef applec
#if sizeof(SInt16) > 4
#error "Result types larger than 4 bytes are not supported."
#endif
#endif
long private_result;
private_result =
CallUniversalProc(*(UniversalProcPtr*)TBTrapTableAddress(0xAAF1),
kPascalStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(SInt16)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(pb))), pb);
return *(((SInt16*)&private_result) + RESULT_OFFSET(SInt16));
}
--Vinnie Moscaritolo
devsupport@apple.com
[ Technical Q&A's : Devices : DV26 ]
|